package funcionario;
// Generated 21/08/2011 22:49:20 by Hibernate Tools 3.2.1.GA

import entrada.Entrada;
import cargo.Cargo;
import java.util.List;
import javax.persistence.UniqueConstraint;
import login.Login;
import setorEmpresa.SetorEmpresa;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

/**
 * Funcionario generated by hbm2java
 */
@Entity
@Table(name = "funcionario", schema = "public")
public class Funcionario implements java.io.Serializable {

    private int idFuncionario;
    private SetorEmpresa setorEmpresa;
    private Cargo cargo;
    private Login objLogin;
    private String cpf;
    private String nome;
    private String matricula;
    private Boolean statusFuncionario;
    private List<Entrada> entradas;

    public Funcionario() {
    }

    public Funcionario(int idFuncionario, String cpf) {
        this.idFuncionario = idFuncionario;
        this.cpf = cpf;
    }

    public Funcionario(int idFuncionario, SetorEmpresa setorEmpresa, Cargo cargo, Login objLogin, String cpf, String nome, String matricula, Boolean statusFuncionario, List<Entrada> entradas) {
        this.idFuncionario = idFuncionario;
        this.setorEmpresa = setorEmpresa;
        this.cargo = cargo;
        this.cpf = cpf;
        this.nome = nome;
        this.matricula = matricula;
        this.statusFuncionario = statusFuncionario;
        this.entradas = entradas;
        this.objLogin = objLogin;
    }

    @Id
    @Column(name = "id_funcionario", unique = true, nullable = false)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public int getIdFuncionario() {
        return this.idFuncionario;
    }

    public void setIdFuncionario(int idFuncionario) {
        this.idFuncionario = idFuncionario;
    }

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "id_setor_empresa")
    public SetorEmpresa getSetorEmpresa() {
        return this.setorEmpresa;
    }

    public void setSetorEmpresa(SetorEmpresa setorEmpresa) {
        this.setorEmpresa = setorEmpresa;
    }

    @OneToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "id_cargo")
    public Cargo getCargo() {
        return this.cargo;
    }
    
    @OneToOne(fetch=FetchType.EAGER,cascade = CascadeType.ALL)    
    @JoinColumn(name="id_login", insertable=true, updatable=true)
    public Login getObjLogin() {
        return this.objLogin;
    }

    public void setObjLogin(Login objLogin) {
        this.objLogin = objLogin;
    }
    
    public void setCargo(Cargo cargo) {
        this.cargo = cargo;
    }
    
    @Column(name = "cpf", unique = true, nullable = false, length = 15)
    public String getCpf() {
        return this.cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    @Column(name = "nome", length = 100)
    public String getNome() {
        return this.nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    @Column(name = "matricula", unique = true, length = 15)
    public String getMatricula() {
        return this.matricula;
    }

    public void setMatricula(String matricula) {
        this.matricula = matricula;
    }
    
    @Column(name = "status_funcionario")
    public Boolean  getStatusFuncionario() {
        return this.statusFuncionario;
    }

    public void setStatusFuncionario(Boolean  statusFuncionario) {
        this.statusFuncionario = statusFuncionario;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "funcionario")
    public List<Entrada> getEntradas() {
        return this.entradas;
    }

    public void setEntradas(List<Entrada> entradas) {
        this.entradas = entradas;
    }

}